package org.resotc.model;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Set;


public interface OutgoingQueue {

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#addQueueToNeighbour(org.resotc.model.NeighbourOrientation)
	 */
	public abstract void addQueueToNeighbour(NeighbourOrientation mOr);

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#getQueueByOrientation(org.resotc.model.NeighbourOrientation)
	 */
	public abstract LinkedList<Individual> getQueueByOrientation(NeighbourOrientation theOr);

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#setSingleQueueActive(org.resotc.model.NeighbourOrientation)
	 */
	public abstract void setSingleQueueActive(NeighbourOrientation or);

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#setQueuesActive(java.util.ArrayList)
	 */
	public abstract void setQueuesActive(ArrayList<NeighbourOrientation> list);

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#getOriginNeighbourOrientation()
	 */
	public abstract NeighbourOrientation getOriginNeighbourOrientation();

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#getActiveQueues()
	 */
	public abstract ArrayList<LinkedList<Individual>> getActiveQueues();

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#getNumberOfIndividuals()
	 */
	public abstract int getNumberOfIndividuals();

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#isQueueOverloaded()
	 */
	public abstract boolean isQueueOverloaded();

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#addIndividualToQueue(participants.IndividualImpl, org.resotc.model.NeighbourOrientation)
	 */
	public abstract void addIndividualToQueue(Individual i, NeighbourOrientation n);

	/* (non-Javadoc)
	 * @see network.ApproachingQueue#getAccessibleNeighbours()
	 */
	public abstract Set<NeighbourOrientation> getAccessibleNeighbours();

}